Field
The disclosed embodiments generally relate to data storage systems. More specifically, the disclosed embodiments relate to the design of a data storage system that provides an append-only storage model that supports open and closed extents for storing data blocks.
Related Art
Organizations are beginning to use cloud-based storage systems to store large volumes of data. These cloud-based storage systems are typically operated by hosting companies that maintain a sizable storage infrastructure, often comprising thousands of servers that that are sited in geographically distributed data centers. Customers typically buy or lease storage capacity from these hosting companies. In turn, the hosting companies provision storage resources according to the customers' requirements and enable the customers to access these storage resources.
To provide fault tolerance, data items are often replicated across different storage devices. In this way, if a specific storage device fails, the data items on the failed storage device can be accessed and recovered from other storage devices. However, this replication can complicate repair operations, because multiple data blocks may have to be retrieved from different storage devices to repair a single data block. These repair operations are further complicated if any of the data blocks change during the repair process. To prevent such problems, storage systems typically use locks to prevent updates to associated data blocks during a repair operation. However, if a repair operation takes a significant amount of time, these locks can create performance problems for applications that need to access these data blocks.
Hence, what is needed is a data storage system that facilitates repair and other related operations without the performance problems associated with using locks.